/**
 * 业务数据配置接口定义
 * @author luguoxiang
 * @date 2022/7/5
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */

import type {SoarQuery} from "@/soar/types/SoarQuery";

/**
 * map类型
 */
export declare type Map<T> = { [p: string]: T };

/**
 * 可为数组
 */
export declare type Arrayable<T> = T | T[];

/**
 * 基础实体
 */
export interface BaseEntity {
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
  /** 创建人 */
  createBy?: string;
  /** 更新人 */
  updateBy?: string;
}

/**
 * 基于路径的树形数据
 */
export interface PathTreeEntity extends BaseEntity {
  /** 父id */
  parentId?: string;
  /** 祖先id链路 */
  ancestorLink?: string;
  /** 排序 */
  sort?: number;
}

/**
 * 基于左右值的树形数据
 */
export interface NumberTreeEntity extends BaseEntity {
  /** 父id */
  parentId?: string;
  /** 左值 */
  leftNo?: number;
  /** 右值 */
  rightNo?: number;
}

export type Id = string|number;

/**
 * 后端接口
 */
export interface Api {
	/**
	 * 分页查询
	 */
	query?(params: SoarQuery): any | Promise<any>;

	/**
	 * 详情
	 */
	detail?(id: string|number): any | Promise<any>;

	/**
	 * 创建数据
	 */
	create?(data: any): void | any | Promise<any>;

	/**
	 * 修改数据
	 */
	update?(data: any): void | any | Promise<any>;

	/**
	 * 删除数据
	 */
	remove?(ids: Id | Id[]): void | any | Promise<any>;
}

export declare type GetParams = {
    (val: any): SoarQuery;
};